# -*- coding:utf-8 -*-
"""
Author：Administrator
Date:2021年10月27日
"""
import re

# +:至少出现一次（≥1次）
# print(re.search(r'go+d', 'gooood'))

# *: 匹配0次或无限次，重复在*号之前的字符,即出现任意次数（≥0次）
# print(re.search(r'go*d', 'gd'))

# ?:匹配0次或1次，重复在?号之前的字符, 即最多出现一次(≤1次)；
# 让贪婪模式转换为非贪婪模式
# print(re.search(r'go?d', 'good'))

# {n}: 用来限定字符出现的次数na次
# {,n}: 用来限定字符出现的次数≤n次
# {n,m}: 匹配num个大括号之前的字符（n<=num<=m）
# print(re.search(r'a\dx', 'a590x'))
# print(re.search(r'a\d{3}x', 'a590x'))



# ()用来分组
# print(re.search(r'b\d+(c\d+)d\d+', 'a34b12c45d78').group(1))
# print(re.search(r'g(ab)x', 'gtx'))
# print(re.search(r'g(ab)x', 'gtx'))
# print(re.search(r'g(ab)x', 'gabx'))
# print(re.search(r'g(ab)+x', 'gababababx'))

# [] 用来表示区间范围
# print(re.search(r'x\d+p', 'dskx347px12312p'))
# print(re.search(r'x[1-5]+p', 'dskx347px12312p'))
# print(re.search(r's[a-d]+j', 'ewisxyajioesabcj'))
# print(re.search(r'p[a-d0-5]+x', 'dpac21x'))

# | 用来表示可选值,和[]有区别,通常配合()使用
# print(re.findall(r'u[352a]x', 'u3xiu5xpu2xouax'))
# print(re.findall(r'u(3|5|2|a)x', 'u3xiu5xpu2xouax')) # findall只白捕获分组里面的数据
# x = re.finditer(r'u(3|5|2|a)x', 'u3xiu5xpu2xouax') # 推荐使用[]
# for i in x:
# 	print(i.group())

# print(re.findall(r'u[236734]x', 'u23xiu67xlu34x'))
# y = re.finditer(r'u(23|67|34)x', 'u23xiu67xlu34x')
# for i in y:
# 	print(i.group())

# ^表示以指定的字符串开始
# print(re.search(r'^st', 'amstp'))
# print(re.search(r'a[^1-5]+x', 'a123xdklsa789x'))

# $ 表示以指定的字符串结束
# print(re.search(r'mp', 'xdkadskjsmpdlaied'))
# print(re.search(r'mp$', 'xdkadskjsmp'))

# 同时使用^ 和 $ 等价于fullmatch
# print(re.search(r'^a\d+m$', 'ua94mt'))
print(re.search(r'^a\d+m$', 'ua94mt'))
print(re.fullmatch(r'^a\d+m$', 'ua94mt'))

